home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_04
/
8n04086b
< prev
next >
Wrap
Text File
|
1990-03-18
|
1KB
|
44 lines
*****Listing 3*****
#ifndef RWSEM_H /* prevent multiple includes */
#define RWSEM_H
#include <limits.h>
#include "semaphor.h"
/* constants */
#define RWSOPEN_MAX SEMOPEN_MAX /* max # rwsem sets open at once */
/* type definitions */
typedef struct { /* rwsem set control structure */
char rwsdir[PATH_MAX + 1]; /* directory */
int rwsc; /* r/w semaphore count */
semset_t *ssp; /* semaphore set */
short *lockheld; /* locks held by calling process */
} rwsset_t;
/* function declarations */
int rwsclose(rwsset_t *rwsp);
#define rwscount(rwsp) ((rwsp)->rwsc)
int rwslock(rwsset_t *rwsp, int rwsno, int ltype);
rwsset_t * rwsopen(char *rwsdir, int flags, int rwsc);
int rwsremove(char *rwsdir);
/* rwsopen command flags */
#define RWS_CREAT (01000) /* create and open */
#define RWS_EXCL (02000) /* exclusive open */
/* lock types */
#define RWS_UNLCK (0) /* unlock */
#define RWS_RDLCK (1) /* read lock */
#define RWS_WRLCK (2) /* write lock */
/* error codes */
#define RWSEOS (-20) /* start of error code domain */
#define RWSEMFILE (RWSEOS - 1) /* too many rwsem sets open */
#define RWSPANIC (RWSEOS - 2) /* internal rwsem error */
#endif /* #ifndef RWSEM_H */